﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace BudjetProjekat
{
    public partial class FormNovaTransakcija : Form
    {
        public FormNovaTransakcija()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            cb_Kategorija.Enabled = false;
            cb_Vrsta.Enabled = false;
            tb_Iznos.Enabled = false;
            tb_Opis.Enabled = false;
            rb_Prihod.Enabled = false;
            rb_Trosak.Enabled = false;
            btn_OK.Enabled = false;


            inicijalizacija();
        }

        private void inicijalizacija()
        {
            using (SqlConnection konekcija = new SqlConnection())
            {
                konekcija.ConnectionString = "Data Source=.\\sqlexpress;Initial Catalog=BudjetDB;Integrated Security=True";
                konekcija.Open();

                using (SqlDataAdapter gru = new SqlDataAdapter("SELECT Naziv FROM Grupa", konekcija))
                {
                    DataTable tabela = new DataTable();
                    DataRow prazan_red;
                    DataColumn kolona;
                    //dodavanje kolone
                    kolona = new DataColumn();
                    kolona.DataType = System.Type.GetType("System.String");
                    kolona.ColumnName = "Naziv";
                    tabela.Columns.Add(kolona);
                    //dodavanje praznog reda
                    prazan_red = tabela.NewRow();
                    prazan_red["Naziv"] = " ";
                    tabela.Rows.Add(prazan_red);
                    //dodavanje naziva grupa iz baze
                    gru.Fill(tabela);
                    cb_Grupa.ValueMember = "Naziv";
                    cb_Grupa.DisplayMember = "Naziv";
                    cb_Grupa.DataSource = tabela;

                }
            }
        }

        private void cb_Grupa_SelectedIndexChanged(object sender, EventArgs e)
        {
            refreshiranje();
        }

        private void refreshiranje()
        {
            using (SqlConnection konekcija = new SqlConnection())
            {
                konekcija.ConnectionString = "Data Source=.\\sqlexpress;Initial Catalog=BudjetDB;Integrated Security=True";
                konekcija.Open();

                using (SqlDataAdapter kat = new SqlDataAdapter("SELECT Naziv FROM Kategorija WHERE FK_ID_Grupa = (SELECT ID FROM Grupa WHERE Naziv = \'" + cb_Grupa.Text + "\')", konekcija))
                {
                    DataTable tabela = new DataTable();
                    DataRow prazan_red;
                    DataColumn kolona;
                    //dodavanje kolone
                    kolona = new DataColumn();
                    kolona.DataType = System.Type.GetType("System.String");
                    kolona.ColumnName = "Naziv";
                    tabela.Columns.Add(kolona);
                    //dodavanje praznog reda
                    prazan_red = tabela.NewRow();
                    prazan_red["Naziv"] = " ";
                    tabela.Rows.Add(prazan_red);
                    //dodavanje naziva kolone iz baze
                    kat.Fill(tabela);
                    cb_Kategorija.ValueMember = "Naziv";
                    cb_Kategorija.DisplayMember = "Naziv";
                    cb_Kategorija.DataSource = tabela;
                }
            }
            if (cb_Grupa.Text != " ") cb_Kategorija.Enabled = true;
            else cb_Kategorija.Enabled = false;
            tb_Iznos.Text = "";
            tb_Opis.Text = "";
            rb_Prihod.Checked = false;
            rb_Trosak.Checked = false;
        }

        private void cb_Kategorija_SelectedIndexChanged(object sender, EventArgs e)
        {
            refreshkategorije();
        }

        private void refreshkategorije()
        {
            using (SqlConnection konekcija = new SqlConnection())
            {
                konekcija.ConnectionString = "Data Source=.\\sqlexpress;Initial Catalog=BudjetDB;Integrated Security=True";
                konekcija.Open();

                using (SqlDataAdapter vrs = new SqlDataAdapter("SELECT Naziv FROM Vrsta", konekcija))
                {
                    DataTable tabela = new DataTable();
                    DataRow prazan_red, red;
                    DataColumn kolona;
                    //dodavanje kolone
                    kolona = new DataColumn();
                    kolona.DataType = System.Type.GetType("System.String");
                    kolona.ColumnName = "Naziv";
                    tabela.Columns.Add(kolona);
                    //dodavanje praznog reda
                    prazan_red = tabela.NewRow();
                    prazan_red["Naziv"] = " ";
                    tabela.Rows.Add(prazan_red);

                    //dodavanje tipa troska iz baze
                    vrs.Fill(tabela);
                    cb_Vrsta.ValueMember = "Naziv";
                    cb_Vrsta.DisplayMember = "Naziv";
                    cb_Vrsta.DataSource = tabela;
                }
            }
            if (cb_Kategorija.Text != " ") cb_Vrsta.Enabled = true;
            else cb_Vrsta.Enabled = false;

            tb_Iznos.Text = "";
            tb_Opis.Text = "";
            rb_Prihod.Checked = false;
            rb_Trosak.Checked = false;
        }

        private void cb_Vrsta_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cb_Vrsta.Text != " ")
            {
                tb_Iznos.Enabled = true;
            }
            else
            {
                tb_Iznos.Enabled = false;
                tb_Opis.Enabled = false;
                rb_Trosak.Enabled = false;
                rb_Prihod.Enabled = false;
            }
            rb_Prihod.Checked = false;
            rb_Trosak.Checked = false;
            tb_Iznos.Text = "";
            tb_Opis.Text = "";
            btn_OK.Enabled = false;
        }

        private void tb_Iznos_TextChanged(object sender, EventArgs e)
        {
            if (tb_Iznos.Text != "")
            {
                rb_Trosak.Enabled = true;
                rb_Prihod.Enabled = true;
                tb_Opis.Enabled = true;
            }
            else
            {
                rb_Prihod.Checked = false;
                rb_Trosak.Checked = false;
                rb_Trosak.Enabled = false;
                rb_Prihod.Enabled = false;
                tb_Opis.Enabled = false;
                tb_Opis.Text = "";
                btn_OK.Enabled = false;
            }
        }

        private void rb_Prihod_CheckedChanged(object sender, EventArgs e)
        {
            btn_OK.Enabled = true;
        }

        private void rb_Trosak_CheckedChanged(object sender, EventArgs e)
        {
            btn_OK.Enabled = true;
        }

        private void btn_OK_Click(object sender, EventArgs e)
        {
            save();
        }

        private void save()
        {
            using (SqlConnection konekcija = new SqlConnection())
            {
                konekcija.ConnectionString = "Data Source=.\\sqlexpress;Initial Catalog=BudjetDB;Integrated Security=True";
                konekcija.Open();


                string vrati_ID_Kategorije = "SELECT ID FROM Kategorija WHERE Naziv = \'" + cb_Kategorija.Text + "\'";
                string vrati_ID_Vrste = "SELECT ID FROM Vrsta WHERE Naziv = \'" + cb_Vrsta.Text + "\'";
                string tip = "";
                if (rb_Prihod.Checked == true)
                    tip = "Prihod";
                else
                    tip = "Trošak";
                string vrati_ID_Tipa = "SELECT ID FROM Tip_Transakcije WHERE Naziv = \'" + tip + "\'";

                //BAZA
                SqlCommand sCommand = new SqlCommand();

                sCommand = new SqlCommand(vrati_ID_Kategorije, konekcija);
                int idKategorija = Convert.ToInt32(sCommand.ExecuteScalar());
                sCommand = new SqlCommand(vrati_ID_Vrste, konekcija);
                int idVrsta = Convert.ToInt32(sCommand.ExecuteScalar());
                sCommand = new SqlCommand(vrati_ID_Tipa, konekcija);
                int idTip = Convert.ToInt32(sCommand.ExecuteScalar());

                int idKorisnik = 3; //stavljamo fiksnu vrijednost posto nemamo login
                DateTime datum = DateTime.Now;

                //poziv procedure
                SqlCommand cmdIns = new SqlCommand("Transakcija_INSERT", konekcija);
                cmdIns.CommandType = CommandType.StoredProcedure;
                cmdIns.Parameters.Add(new SqlParameter("@datum", datum));
                cmdIns.Parameters.Add(new SqlParameter("@vrijednost", tb_Iznos.Text));
                cmdIns.Parameters.Add(new SqlParameter("@opis", tb_Opis.Text));
                cmdIns.Parameters.Add(new SqlParameter("@fk_id_korisnik", idKorisnik));
                cmdIns.Parameters.Add(new SqlParameter("@fk_id_kategorija", idKategorija));
                cmdIns.Parameters.Add(new SqlParameter("@fk_id_tip", idTip));
                cmdIns.Parameters.Add(new SqlParameter("@fk_id_vrsta", idVrsta));
                cmdIns.ExecuteReader();

                this.Close();
            }
        }




    }
}